<?xml version='1.0'?>

<gl_extension name="GL_VERSION_3_1">
	<tokens>
		<token name="GL_SAMPLER_2D_RECT" value="0x8B63"/>
		<token name="GL_SAMPLER_2D_RECT_SHADOW" value="0x8B64"/>
		<token name="GL_SAMPLER_BUFFER" value="0x8DC2"/>
		<token name="GL_INT_SAMPLER_2D_RECT" value="0x8DCD"/>
		<token name="GL_INT_SAMPLER_BUFFER" value="0x8DD0"/>
		<token name="GL_UNSIGNED_INT_SAMPLER_2D_RECT" value="0x8DD5"/>
		<token name="GL_UNSIGNED_INT_SAMPLER_BUFFER" value="0x8DD8"/>
		<token name="GL_TEXTURE_BUFFER" value="0x8C2A"/>
		<token name="GL_MAX_TEXTURE_BUFFER_SIZE" value="0x8C2B"/>
		<token name="GL_TEXTURE_BINDING_BUFFER" value="0x8C2C"/>
		<token name="GL_TEXTURE_BUFFER_DATA_STORE_BINDING" value="0x8C2D"/>
		<token name="GL_TEXTURE_BUFFER_FORMAT" value="0x8C2E"/>
		<token name="GL_TEXTURE_RECTANGLE" value="0x84F5"/>
		<token name="GL_TEXTURE_BINDING_RECTANGLE" value="0x84F6"/>
		<token name="GL_PROXY_TEXTURE_RECTANGLE" value="0x84F7"/>
		<token name="GL_MAX_RECTANGLE_TEXTURE_SIZE" value="0x84F8"/>
		<token name="GL_RED_SNORM" value="0x8F90"/>
		<token name="GL_RG_SNORM" value="0x8F91"/>
		<token name="GL_RGB_SNORM" value="0x8F92"/>
		<token name="GL_RGBA_SNORM" value="0x8F93"/>
		<token name="GL_R8_SNORM" value="0x8F94"/>
		<token name="GL_RG8_SNORM" value="0x8F95"/>
		<token name="GL_RGB8_SNORM" value="0x8F96"/>
		<token name="GL_RGBA8_SNORM" value="0x8F97"/>
		<token name="GL_R16_SNORM" value="0x8F98"/>
		<token name="GL_RG16_SNORM" value="0x8F99"/>
		<token name="GL_RGB16_SNORM" value="0x8F9A"/>
		<token name="GL_RGBA16_SNORM" value="0x8F9B"/>
		<token name="GL_SIGNED_NORMALIZED" value="0x8F9C"/>
		<token name="GL_PRIMITIVE_RESTART" value="0x8F9D"/>
		<token name="GL_PRIMITIVE_RESTART_INDEX" value="0x8F9E"/>
		<token name="GL_COPY_READ_BUFFER" value="GL_COPY_READ_BUFFER_BINDING"/>
		<token name="GL_COPY_WRITE_BUFFER" value="GL_COPY_WRITE_BUFFER_BINDING"/>
		<token name="GL_UNIFORM_BUFFER" value="0x8A11"/>
		<token name="GL_UNIFORM_BUFFER_BINDING" value="0x8A28"/>
		<token name="GL_UNIFORM_BUFFER_START" value="0x8A29"/>
		<token name="GL_UNIFORM_BUFFER_SIZE" value="0x8A2A"/>
		<token name="GL_MAX_VERTEX_UNIFORM_BLOCKS" value="0x8A2B"/>
		<token name="GL_MAX_FRAGMENT_UNIFORM_BLOCKS" value="0x8A2D"/>
		<token name="GL_MAX_COMBINED_UNIFORM_BLOCKS" value="0x8A2E"/>
		<token name="GL_MAX_UNIFORM_BUFFER_BINDINGS" value="0x8A2F"/>
		<token name="GL_MAX_UNIFORM_BLOCK_SIZE" value="0x8A30"/>
		<token name="GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS" value="0x8A31"/>
		<token name="GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS" value="0x8A33"/>
		<token name="GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT" value="0x8A34"/>
		<token name="GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH" value="0x8A35"/>
		<token name="GL_ACTIVE_UNIFORM_BLOCKS" value="0x8A36"/>
		<token name="GL_UNIFORM_TYPE" value="0x8A37"/>
		<token name="GL_UNIFORM_SIZE" value="0x8A38"/>
		<token name="GL_UNIFORM_NAME_LENGTH" value="0x8A39"/>
		<token name="GL_UNIFORM_BLOCK_INDEX" value="0x8A3A"/>
		<token name="GL_UNIFORM_OFFSET" value="0x8A3B"/>
		<token name="GL_UNIFORM_ARRAY_STRIDE" value="0x8A3C"/>
		<token name="GL_UNIFORM_MATRIX_STRIDE" value="0x8A3D"/>
		<token name="GL_UNIFORM_IS_ROW_MAJOR" value="0x8A3E"/>
		<token name="GL_UNIFORM_BLOCK_BINDING" value="0x8A3F"/>
		<token name="GL_UNIFORM_BLOCK_DATA_SIZE" value="0x8A40"/>
		<token name="GL_UNIFORM_BLOCK_NAME_LENGTH" value="0x8A41"/>
		<token name="GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS" value="0x8A42"/>
		<token name="GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES" value="0x8A43"/>
		<token name="GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER" value="0x8A44"/>
		<token name="GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER" value="0x8A46"/>
		<token name="GL_INVALID_INDEX" value="0xFFFFFFFFu"/>
	</tokens>

	<functions>
		<function name="glDrawArraysInstanced" return="void">
			<params>
				<param type="GLenum" name="mode"/>
				<param type="GLint" name="first"/>
				<param type="GLsizei" name="count"/>
				<param type="GLsizei" name="instancecount"/>
			</params>
			<mappings>
				<mapping from="GL_ARB_draw_instanced" name="glDrawArraysInstancedARB"/>
				<mapping from="GL_EXT_draw_instanced" name="glDrawArraysInstancedEXT"/>
			</mappings>
		</function>
		<function name="glDrawElementsInstanced" return="void">
			<params>
				<param type="GLenum" name="mode"/>
				<param type="GLsizei" name="count"/>
				<param type="GLenum" name="type"/>
				<param type="const GLvoid*" name="indices"/>
				<param type="GLsizei" name="instancecount"/>
			</params>
			<mappings>
				<mapping from="GL_ARB_draw_instanced" name="glDrawElementsInstancedARB"/>
				<mapping from="GL_EXT_draw_instanced" name="glDrawElementsInstancedEXT"/>
			</mappings>
		</function>
		<function name="glTexBuffer" return="void">
			<params>
				<param type="GLenum" name="target"/>
				<param type="GLenum" name="internalformat"/>
				<param type="GLuint" name="buffer"/>
			</params>
			<mappings>
				<mapping from="GL_ARB_texture_buffer_object" name="glTexBufferARB"/>
				<mapping from="GL_EXT_texture_buffer_object" name="glTexBufferEXT"/>
			</mappings>
		</function>
		<function name="glPrimitiveRestartIndex" return="void">
			<params>
				<param type="GLuint" name="index"/>
			</params>
			<mappings>
				<mapping from="GL_NV_primitive_restart" name="glPrimitiveRestartIndexNV"/>
			</mappings>
		</function>
	</functions>

	<additionals>
		<ext name="GL_ARB_copy_buffer"/>
		<ext name="GL_ARB_texture_rectangle"/>
		<ext name="GL_ARB_uniform_buffer_object"/>
	</additionals>
</gl_extension>
